home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / python2.6 / commands.py < prev    next >
Text File  |  2009-11-02  |  3KB  |  91 lines

  1. """Execute shell commands via os.popen() and return status, output.
  2.  
  3. Interface summary:
  4.  
  5.        import commands
  6.  
  7.        outtext = commands.getoutput(cmd)
  8.        (exitstatus, outtext) = commands.getstatusoutput(cmd)
  9.        outtext = commands.getstatus(file)  # returns output of "ls -ld file"
  10.  
  11. A trailing newline is removed from the output string.
  12.  
  13. Encapsulates the basic operation:
  14.  
  15.       pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
  16.       text = pipe.read()
  17.       sts = pipe.close()
  18.  
  19.  [Note:  it would be nice to add functions to interpret the exit status.]
  20. """
  21.  
  22. __all__ = ["getstatusoutput","getoutput","getstatus"]
  23.  
  24. # Module 'commands'
  25. #
  26. # Various tools for executing commands and looking at their output and status.
  27. #
  28. # NB This only works (and is only relevant) for UNIX.
  29.  
  30.  
  31. # Get 'ls -l' status for an object into a string
  32. #
  33. def getstatus(file):
  34.     """Return output of "ls -ld <file>" in a string."""
  35.     import warnings
  36.     warnings.warn("commands.getstatus() is deprecated", DeprecationWarning, 2)
  37.     return getoutput('ls -ld' + mkarg(file))
  38.  
  39.  
  40. # Get the output from a shell command into a string.
  41. # The exit status is ignored; a trailing newline is stripped.
  42. # Assume the command will work with '{ ... ; } 2>&1' around it..
  43. #
  44. def getoutput(cmd):
  45.     """Return output (stdout or stderr) of executing cmd in a shell."""
  46.     return getstatusoutput(cmd)[1]
  47.  
  48.  
  49. # Ditto but preserving the exit status.
  50. # Returns a pair (sts, output)
  51. #
  52. def getstatusoutput(cmd):
  53.     """Return (status, output) of executing cmd in a shell."""
  54.     import os
  55.     pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
  56.     text = pipe.read()
  57.     sts = pipe.close()
  58.     if sts is None: sts = 0
  59.     if text[-1:] == '\n': text = text[:-1]
  60.     return sts, text
  61.  
  62.  
  63. # Make command argument from directory and pathname (prefix space, add quotes).
  64. #
  65. def mk2arg(head, x):
  66.     from warnings import warnpy3k
  67.     warnpy3k("In 3.x, mk2arg has been removed.")
  68.     import os
  69.     return mkarg(os.path.join(head, x))
  70.  
  71.  
  72. # Make a shell command argument from a string.
  73. # Return a string beginning with a space followed by a shell-quoted
  74. # version of the argument.
  75. # Two strategies: enclose in single quotes if it contains none;
  76. # otherwise, enclose in double quotes and prefix quotable characters
  77. # with backslash.
  78. #
  79. def mkarg(x):
  80.     from warnings import warnpy3k
  81.     warnpy3k("in 3.x, mkarg has been removed.")
  82.     if '\'' not in x:
  83.         return ' \'' + x + '\''
  84.     s = ' "'
  85.     for c in x:
  86.         if c in '\\$"`':
  87.             s = s + '\\'
  88.         s = s + c
  89.     s = s + '"'
  90.     return s
  91.